package multiplex.view;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.List;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;

import multiplex.facade.Facade;
import multiplex.model.Filme;
import multiplex.model.Promocao;
import multiplex.model.PromocaoFilme;


public class IFTelaCadastraPromocaoFilme extends InternalFramePrincipal{
	
	private JLabel labelNomeFilme;   
    private JFormattedTextField textoNomeFilme;  
    private JLabel labelNomePromocao;   
    private JFormattedTextField textoNomePromocao; 
    private JLabel labelDescricao;   
    private JFormattedTextField textoDescricao;
    private JLabel labelDia;   
    private JFormattedTextField textoDia;
    private JLabel labelPreco;   
    private JFormattedTextField textoPreco;
    private JList lista;
    private JButton botaoBuscar;
    private JButton botaoInserir;
	private List<Filme> filmes;
	private Facade fachada;
	
	public IFTelaCadastraPromocaoFilme(final PromocaoFilme aPromocao){
		super("Altera Promoção de Filme");
        final Container conteudo = getContentPane();     
        conteudo.setLayout(null);
        
        fachada= new Facade();
        
        labelNomeFilme = new JLabel("Filme");   
        labelNomeFilme.setBounds(14, 18, 80, 19);
        textoNomeFilme = new JFormattedTextField();      
        textoNomeFilme.setBounds(50, 18, 180, 19);   
        textoNomeFilme.setText(aPromocao.getFilme().getNome());

        labelNomePromocao = new JLabel("Promoção");   
        labelNomePromocao.setBounds(14, 266, 120, 19);   
        textoNomePromocao = new JFormattedTextField();   
        textoNomePromocao.setBounds(90, 266, 140, 19);    
        textoNomePromocao.setText(aPromocao.getNome());
        
        labelDescricao = new JLabel("Descrição");   
        labelDescricao.setBounds(14, 286, 84, 19);   
        textoDescricao = new JFormattedTextField();   
        textoDescricao.setBounds(90, 286, 140, 40); 
        textoDescricao.setText(aPromocao.getDescricao());
        
        labelDia = new JLabel("Dia (dd/mm/yyyy)");   
        labelDia.setBounds(14, 328, 120, 19);   
        textoDia = new JFormattedTextField();   
        textoDia.setBounds(120, 328, 100, 19);
        textoDia.setText(aPromocao.getDia().toString());
        
        labelPreco = new JLabel("Preço");   
        labelPreco.setBounds(14, 348, 120, 19);   
        textoPreco = new JFormattedTextField();   
        textoPreco.setBounds(70, 348, 100, 19);
        textoPreco.setText(Double.toString(aPromocao.getDesconto()));
        
        botaoInserir = new JButton("Inserir");   
        botaoInserir.setBounds(70, 370, 100, 35); 
        botaoInserir.setMnemonic('I'); 
        
        conteudo.add(labelNomeFilme);
        conteudo.add(textoNomeFilme);
        //conteudo.add(botaoBuscar);
        //conteudo.add(lista);
        conteudo.add(labelNomePromocao);
        conteudo.add(textoNomePromocao);
        conteudo.add(labelDescricao);
        conteudo.add(textoDescricao);
        conteudo.add(labelDia);
        conteudo.add(textoDia);
        conteudo.add(labelPreco);
        conteudo.add(textoPreco);
        conteudo.add(botaoInserir);
        
        botaoInserir.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				try { 
					double desconto = java.lang.Double.valueOf(textoPreco.getText());
					Calendar dia = Calendar.getInstance();
					SimpleDateFormat sdf1 = new SimpleDateFormat("dd/mm/yyyy");
					dia.setTime(sdf1.parse(textoDia.getText()));
					if(fachada.cadPromocaoDeFilme(new PromocaoFilme(textoNomePromocao.getText(), desconto, dia, aPromocao.getFilme(), textoDescricao.getText())))
						JOptionPane.showMessageDialog(conteudo, "Promoção inserida com sucesso","Sucesso", EXIT_ON_CLOSE);
					else JOptionPane.showMessageDialog(conteudo,"Houve um erro durante a inclusão, revise os campos e tente novamente" ,"Erro", EXIT_ON_CLOSE);						
				} catch (Throwable e) { 
					JOptionPane.showMessageDialog(conteudo,"Houve um erro durante a inclusão, revise os campos e tente novamente" ,"Erro", EXIT_ON_CLOSE); 
					}
			}
		});
		
	}
    public IFTelaCadastraPromocaoFilme() {   
        super("Cadastro de Promoção de Filmes");
   
        final Container conteudo = getContentPane();     
        conteudo.setLayout(null);
        
        fachada= new Facade();
        
        labelNomeFilme = new JLabel("Filme");   
        labelNomeFilme.setBounds(14, 18, 80, 19);   
        textoNomeFilme = new JFormattedTextField();      
        textoNomeFilme.setBounds(50, 18, 180, 19);   
        
        botaoBuscar = new JButton("Buscar");   
        botaoBuscar.setBounds(240, 18, 87, 19); 
        botaoBuscar.setMnemonic('B'); 
        
        lista = new JList();
        lista.setBounds(14, 40, 220, 220);
       
        labelNomePromocao = new JLabel("Promoção");   
        labelNomePromocao.setBounds(14, 266, 120, 19);   
        textoNomePromocao = new JFormattedTextField();   
        textoNomePromocao.setBounds(90, 266, 140, 19);    
               
        labelDescricao = new JLabel("Descrição");   
        labelDescricao.setBounds(14, 286, 84, 19);   
        textoDescricao = new JFormattedTextField();   
        textoDescricao.setBounds(90, 286, 140, 40); 
        
        labelDia = new JLabel("Dia (dd/mm/yyyy)");   
        labelDia.setBounds(14, 328, 120, 19);   
        textoDia = new JFormattedTextField();   
        textoDia.setBounds(120, 328, 100, 19);
        
        labelPreco = new JLabel("Preço");   
        labelPreco.setBounds(14, 348, 120, 19);   
        textoPreco = new JFormattedTextField();   
        textoPreco.setBounds(70, 348, 100, 19);
        
        botaoInserir = new JButton("Inserir");   
        botaoInserir.setBounds(70, 370, 100, 35); 
        botaoInserir.setMnemonic('I'); 
        
        conteudo.add(labelNomeFilme);
        conteudo.add(textoNomeFilme);
        conteudo.add(botaoBuscar);
        conteudo.add(lista);
        conteudo.add(labelNomePromocao);
        conteudo.add(textoNomePromocao);
        conteudo.add(labelDescricao);
        conteudo.add(textoDescricao);
        conteudo.add(labelDia);
        conteudo.add(textoDia);
        conteudo.add(labelPreco);
        conteudo.add(textoPreco);
        conteudo.add(botaoInserir);
        
        botaoBuscar.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
			
				DefaultListModel listaModel = new DefaultListModel( );
				filmes = fachada.getFilme(textoNomeFilme.getText());
				for(Filme f : filmes){
					listaModel.addElement(f);
				}
				lista.setModel( listaModel );
				if(filmes.size()==0)JOptionPane.showMessageDialog(conteudo, "Filme não encontrado","Erro", EXIT_ON_CLOSE);
			}
		});
        
        botaoInserir.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent arg0) {
				try {
					double desconto = java.lang.Double.valueOf(textoPreco.getText());
					Calendar dia = Calendar.getInstance();
					SimpleDateFormat sdf1 = new SimpleDateFormat("dd/mm/yyyy");
					
					 
					dia.setTime(sdf1.parse(textoDia.getText()));
					if(fachada.cadPromocaoDeFilme(new PromocaoFilme(textoNomePromocao.getText(), desconto, dia, (Filme) lista.getSelectedValue(), textoDescricao.getText())))
						JOptionPane.showMessageDialog(conteudo, "Promoção inserida com sucesso","Sucesso", EXIT_ON_CLOSE);
					else JOptionPane.showMessageDialog(conteudo,"Promoção já cadastrada" ,"Erro", EXIT_ON_CLOSE);						
				} catch (Throwable e) { 
					JOptionPane.showMessageDialog(conteudo,"Houve um erro durante a inclusão, revise os campos e tente novamente" ,"Erro", EXIT_ON_CLOSE);
					}
			}
		});
            
    }   
    
    public static void main(String args[]){
    	
    	JFrame aTela = new JFrame();
    	aTela.setSize(new Dimension(800,600));
    	
    	PromocaoFilme aPromocao = new PromocaoFilme("terça maluca",10, Calendar.getInstance(),new Filme(),"Descricao");
    	IFTelaCadastraPromocaoFilme aTelaCadastra = new IFTelaCadastraPromocaoFilme();
    	
    	aTela.add(aTelaCadastra);
		aTela.setVisible(true);
		aTelaCadastra.setVisible(true);
    }

}
